Meja kerja programmer dengan catatan pseudocode dan tabel penelusuran algoritma di samping laptop

Panduan Langkah demi Langkah Menyusun Algoritma dari Nol

Menyusun algoritma sering terasa lebih sulit daripada menulis kodenya. Panduan langkah demi langkah menyusun algoritma ini memecah proses itu menjadi tahapan yang bisa dikerjakan berurutan, dari memahami soal sampai menguji hasilnya. Setiap langkah disertai contoh agar bisa langsung dipraktikkan di soal sendiri.

Langkah 1: Tulis ulang masalah dengan bahasa sendiri

Sebelum menyentuh editor kode, baca soal dua kali lalu tulis ulang dengan kalimatmu sendiri. Contoh soal klasik: “diberikan daftar angka, kembalikan angka terbesar kedua”. Tulis ulang menjadi: “saya punya kumpulan angka, saya perlu mencari angka yang posisinya kedua tertinggi setelah diurutkan, dan kalau semua angka sama saya perlu tahu harus mengembalikan apa”.

Penulisan ulang ini memaksa kamu menemukan detail yang sering terlewat, terutama kasus tepi seperti daftar kosong, satu elemen, atau nilai duplikat. Catat semua kemungkinan masukan aneh di samping soal aslinya. Kebanyakan bug logika lahir dari kasus tepi yang tidak pernah ditulis di kertas.

Langkah 2: Tentukan masukan dan keluaran secara eksplisit

Tulis dua baris di atas kertas: apa yang masuk, apa yang keluar, beserta tipe datanya. Untuk contoh tadi, masukannya adalah array bilangan bulat dengan panjang minimal nol, keluarannya bilangan bulat atau nilai penanda khusus bila array terlalu pendek. Kejelasan ini mencegah kamu menambah fitur yang tidak diminta.

Kalau soal ambigu, tanyakan ke pembuat soal atau tetapkan asumsi sendiri dan tulis di komentar. Menetapkan asumsi menunjukkan kamu sudah memikirkan batasan masalah.

Langkah 3: Kerjakan contoh kecil secara manual

Ambil satu contoh kecil, misalnya [3, 1, 4, 1, 5], lalu cari jawabannya dengan tangan. Tulis setiap langkah yang kamu lakukan. Dari situ kamu akan melihat pola operasi yang berulang: membandingkan, menyimpan nilai sementara, memperbarui pencatat.

Kerjakan dua atau tiga contoh dengan ukuran berbeda. Kalau pola operasinya konsisten, kamu sudah punya kerangka algoritma. Kalau berubah, kemungkinan ada kondisi yang belum kamu pahami dan perlu dipecah lebih kecil.

Langkah 4: Ubah pola menjadi pseudocode

Pseudocode adalah jembatan antara pikiran dan kode. Tulis dalam bahasa campuran Indonesia dan istilah pemrograman, yang penting konsisten. Contoh untuk mencari nilai terbesar kedua:

fungsi terbesar_kedua(daftar):
    jika panjang(daftar) < 2:
        kembalikan kosong
    terbesar = negatif tak hingga
    kedua = negatif tak hingga
    untuk setiap angka dalam daftar:
        jika angka > terbesar:
            kedua = terbesar
            terbesar = angka
        selain itu jika angka > kedua dan angka != terbesar:
            kedua = angka
    kembalikan kedua

Perhatikan bahwa kondisi angka != terbesar menangani duplikat. Kalau kamu lupa menambahkannya, pseudocode tetap terlihat benar sampai diuji dengan data berisi angka kembar. Cara membaca dan menulis pseudocode yang rapi dibahas lebih detail di tips membaca pseudocode algoritma untuk pemula.

Langkah 5: Telusuri pseudocode dengan tabel

Buat tabel kecil berisi kolom untuk setiap variabel dan satu baris per iterasi. Jalankan pseudocode secara manual, isi tabelnya, lalu bandingkan hasil akhir dengan jawaban yang kamu hitung di langkah tiga. Teknik ini disebut dry run dan menjadi cara termurah menemukan kesalahan logika sebelum menulis kode.

Angka terbesar kedua
3 3 -∞
1 3 1
4 4 3
1 4 3
5 5 4

Dari tabel terlihat nilai akhir kedua adalah 4, sesuai hasil manual. Kalau ada baris yang membuat variabel bergerak aneh, di situlah letak masalahnya.

Langkah 6: Terjemahkan ke kode dan uji kasus tepi

Setelah pseudocode bersih, terjemahkan ke bahasa yang kamu kuasai. Struktur kendali biasanya berpindah hampir satu banding satu. Setelah kode jadi, uji dengan tiga kelompok data: kasus normal, kasus tepi (kosong, satu elemen, semua sama), dan kasus besar untuk melihat perilakunya.

Kalau kamu memakai JavaScript dan kode mulai berserakan karena banyak manipulasi DOM, pola penulisan yang lebih rapi bisa kamu pelajari di 9 pola jQuery untuk merapikan kode front-end yang berserakan. Untuk sisi antarmuka, memilih metode riset pengguna yang tepat juga membantu memastikan solusi yang kamu bangun benar-benar dipakai, seperti diulas dalam perbandingan tiga metode riset pengguna untuk desain antarmuka.

Langkah 7: Ukur efisiensi lalu perbaiki

Hitung berapa kali operasi utama berjalan sebagai fungsi dari ukuran masukan. Algoritma terbesar kedua di atas melakukan satu putaran, jadi pertumbuhannya linear. Kalau kamu memilih mengurutkan dulu lalu mengambil indeks kedua, biayanya lebih tinggi karena pengurutan umumnya lebih mahal daripada satu putaran.

Membandingkan dua pendekatan seperti ini butuh pemahaman notasi pertumbuhan. Penjelasan konsepnya ada di Big O Notation: cara mengukur efisiensi algoritma. Setelah tahu biayanya, putuskan apakah optimasi perlu dilakukan atau solusi sederhana sudah cukup untuk ukuran data yang realistis.

Ringkasan

Menyusun algoritma adalah urutan kerja. Tulis ulang masalah, tetapkan masukan dan keluaran, kerjakan contoh kecil, susun pseudocode, telusuri dengan tabel, terjemahkan ke kode, lalu uji kasus tepi. Ulangi urutan yang sama untuk soal berikutnya dan kecepatanmu akan naik seiring latihan.

Pertanyaan yang Sering Diajukan

Apakah harus selalu menulis pseudocode sebelum koding?

Untuk soal yang kompleks, pseudocode menghemat waktu karena kesalahan logika lebih murah diperbaiki di kertas. Untuk fungsi pendek yang sudah jelas, kamu bisa langsung menulis kode dan menguji kasus tepinya.

Bagaimana kalau contoh kecil yang saya kerjakan hasilnya tidak berpola?

Pecah masalahnya menjadi bagian lebih kecil. Sering kali satu bagian butuh pencarian dan bagian lain butuh pencatatan nilai. Selesaikan bagian-bagian itu terpisah, lalu gabungkan.

Berapa banyak kasus uji yang cukup?

Tiga sampai lima kasus sudah memadai untuk latihan: satu normal, satu kosong, satu berisi duplikat, satu berukuran satu elemen, dan satu berukuran besar. Tambahkan kasus khusus yang relevan dengan domain soal.